# 超拟人合成

# 接口说明

支持流式的方式输入文本,并流式获取文本合成的音频流。

超拟人相比常规的合成能力,在合成中,利用大模型生成一些拟声词,使合成的音频更加拟人,更加真实。

# 接口调用示例

部分开发语言Demo如下,其他开发语言请参照文档进行开发,欢迎大家到讯飞开放平台社区 (opens new window)交流集成经验。

超拟人合成 Python demo (opens new window)

超拟人合成 Java demo (opens new window)

# 接口与鉴权

# 请求示例

调用地址

wss://cbm01.cn-huabei-1.xf-yun.com/v1/private/mcd9m97e6

Note:

  1. 鉴权参考: ws接口鉴权 (opens new window)
  • 请求体示例
{
    "header": {
        "app_id": "123456",
        "status": 2,
    },
    "parameter": {
        "oral": {
            "oral_level":"mid"
        },
        "tts": {
            "vcn": "x4_lingfeiyi_oral",
            "speed": 50,
            "volume": 50,
            "pitch": 50,
            "bgs": 0,
            "reg": 0,
            "rdn": 0,
            "rhy": 0,
            "audio": {
                "encoding": "lame",
                "sample_rate": 24000,
                "channels": 1,
                "bit_depth": 16,
                "frame_size": 0
            }
        }
    },
    "payload": {
        "text": {
            "encoding": "utf8",
            "compress": "raw",
            "format": "plain",
            "status": 2,
            "seq": 0,
            "text": "xxxxxxx"
        }
    }
}

协议结构说明

字段 含义 类型 说明 是否必传
header 协议头部 Object 协议头部,用于描述平台特性的参数
parameter 能力参数 Object AI 能力功能参数,用于控制 AI 引擎特性的开关。
parameter.oral 服务别名 Object oral能力功能参数
parameter.tts 服务别名 Object tts能力功能参数
parameter.tts.audio 期望输出 Object 期望输出
payload 输入数据段 Object 数据段,携带请求的数据。
payload.text 输入数据 Object 待合成文本

header参数

字段 含义 类型 限制 是否必传
app_id 在平台申请的app id信息 string "maxLength":50
status 请求状态,可选值为:0:开始, 1:中间, 2:结束 int 0,1,2

口语化配置参数 parameter.oral

功能标识 功能描述 数据类型 取值范围 必填 默认值
oral_level 口语化等级 string 高:high, 中:mid, 低:low mid
spark_assist 是否通过大模型进行口语化 int 开启:1, 关闭:0 1
stop_split 关闭服务端拆句 int 不关闭:0,关闭:1 0
remain 是否保留原书面语的样子 int 保留:1, 不保留:0 0

remain=1, 保留书面语,即移除所有新增填充语、重复语、语气词和话语符号,保留原书面语的样子。
remain=0, 不保留书面语,即包含所有新增填充语、重复语、语气词和话语符号,不保留原书面语的样子。

功能参数 parameter.tts

功能标识 功能描述 数据类型 必填 默认值
vcn 发音人 string
speed 语速:0对应默认语速的1/2,100对应默认语速的2倍 int 50
volume 音量:0是静音,1对应默认音量1/2,100对应默认音量的2倍 int 50
pitch 语调:0对应默认语速的1/2,100对应默认语速的2倍 int 50
bgs 背景音 int 0
reg 英文发音方式,0:自动判断处理,如果不确定将按照英文词语拼写处理(缺省), 1:所有英文按字母发音, 2:自动判断处理,如果不确定将按照字母朗读 int 0
rdn 合成音频数字发音方式,0:自动判断, 1:完全数值, 2:完全字符串, 3:字符串优先 int 0
rhy 是否返回拼音标注,0:不返回拼音, 1:返回拼音(纯文本格式,utf8编码) int 0

音频格式控制参数 parameter.tts.audio

字段 含义 数据类型 取值范围 默认值 说明 必填
encoding 音频编码 string lame, raw lame: mp3格式音频
raw: pcm格式音频
sample_rate 采样率 int 16000, 8000, 24000 24000 音频采样率,可枚举
channels 声道数 int 1, 2 1 声道数,可枚举
bit_depth 位深 int 16, 8 16 单位bit,可枚举
frame_size 帧大小 int 最小值:0, 最大值:1024 0 帧大小,默认0

推荐使用 lame编解码格式,24000的采样率。

请求数据

字段 含义 数据类型 取值范围 默认值 说明 必填
encoding 文本编码 string utf8 utf8 必须是 utf8
compress 文本压缩格式 string raw raw 取值范围可枚举
format 文本格式 string plain, json plain 取值范围可枚举
status 数据状态 int 0:开始, 1:中间, 2:结束 0,1,2 流式传输 (一次性合成直接传2)
seq 数据序号 int 最小值:0, 最大值:9999999 数据序号,比如1,2,3,4...
text 文本数据 string 最小尺寸1字节,最大尺寸:8000字节 文本内容,base64编码后不超过8000字节,约2000个字符

# 响应示例

  • 响应体
{
    "header": {
        "code": 0,
        "message": "success",
        "sid": "aso000ede92@dx18caf514baab832882",
        "status": 1
    },
    "payload": {
        "audio": {
            "encoding": "lame",
            "sample_rate": 24000,
            "channels": 1,
            "bit_depth": 16,
            "status": 0,
            "seq": 0,
            "frame_size": 0,
            "audio": "xxxxx",
        },
        "pybuf": {
            "encoding": "utf8",
            "compress": "raw",
            "format": "plain",
            "status": 0,
            "seq": 0,
            "text": "xxxxx"
        }
    }
}

返回结构说明

字段 含义 类型 说明
header 协议头部 Object 协议头部,用于描述平台特性的参数
payload 响应数据块 Object 数据段,携带响应的数据。
audio 响应数据块 Object 输出数据
pybuf 响应数据块 Object 输出数据

header参数

字段 含义 类型
code 返回码,0表示成功,其它表示异常 int
message 错误描述 string
sid 本次会话的id string

payload.audio响应数据参数

字段 含义 数据类型 取值范围 默认值 说明
encoding 音频编码 string lame, raw -- --
sample_rate 采样率 int 16000, 8000, 24000 24000 音频采样率,可枚举
channels 声道数 int 1, 2 1 声道数,可枚举
bit_depth 位深 int 16, 8 16 单位bit,可枚举
status 数据状态 int 0:开始, 1:中间, 2:结束 流式传输
seq 数据序号 int 最小值:0, 最大值:9999999 0 标明数据为第几块
audio base64编码后的音频数据 string 最小尺寸:0B, 最大尺寸:10485760B 音频大小:0-10M
frame_size 帧大小 int 最小值:0, 最大值:1024 0 帧大小,默认0
ced 合成音频对应的文本进度 string xxx ced的单位是字节

pybuf, 当 rhy = 1 时返回。

字段 含义 数据类型 取值范围 默认值 说明
encoding 文本编码 string utf8 utf8 --
compress 文本压缩格式 string raw raw --
format 文本格式 string plain, json plain --
status 数据状态 int 0:开始, 1:中间, 2:结束(一次性合成直接传2) 流式传输
seq 数据序号 int 最小值:0, 最大值:9999999 数据序号
text base64编码后的文本数据 string 最小尺寸:0B, 最大尺寸:1048576B 文本大小:0-1M

text解码后的数据包含音素信息。注:如果文本中包含英文,英文音素目前不带声调信息;音素时长的单位是5毫秒。

例如:输入的待合成的文本”科大讯飞语音合成系统“,text解码后得到信息如下

sil:6;欢[=huan1]-h1:16;@-uan1:24;迎[=ying2]-ing2:20;使[=shi3]-sh3:24;@-iii3:14;用[=yong4]-iong4:24;科[=ke1]-k1:20;@-e1:14;大[=da4]-d4:12;@-a4:24;讯[=xun4]-x4:22;@-vn4:20;飞[=fei1]-f1:16;@-ei1:22;语[=yu3]-v3:32;音[=yin1]-in1:26;合[=he2]-h2:26;@-e2:18;成[=cheng2]-ch2:18;@-eng2:14;系[=xi4]-x4:20;@-i4:12;统[=tong3]*-t3:20;@-ong3:12;sil:82;

符号 解释
; 音素分割符,将不同的音素分割开
: 音素时长分割符,后的数字为该音素的帧数(目前1帧代表5ms)。例如"sil:8"表示音素sil的发音时长为8*5=40毫秒
- 音节分割符,将音素和该音素对应的音节分割开。例如"欢[=huan1]-h1:16"中‘-’之后的"h1"表示音素
@ 表示当前音素和前一个是一个文本
* L1韵律的分割符。L1韵律分割符放在音节信息后面。
[] 音节信息。例如"科"--->[=ke1]是该音素对应的音节和词。
sil 表示句首和句末的清音, sil不带声调信息
sp 是句中的清音, sp的声调信息和前一个音素一致

# 错误码列表

  • 错误码示例:
{
    "code":10003, // 平台通用错误码,详细信息请参照 5.1 平台通用错误码
    "message":"WrapperInitErr;errno=101", // errno 为引擎错误码,详细信息请参照 5.2 引擎错误码
    "sid":"ocr00088c7d@dx170194697e9a11d902"
}


错误码 说明 处理策略
10009 输入数据非法 检查输入数据
10010 没有授权许可或授权数已满 提交工单
10019 session超时 检查是否数据发送完毕但未关闭连接
10043 音频解码失败 检查aue参数,如果为speex,请确保音频是speex音频并分段压缩且与帧大小一致
10114 session 超时 会话时间超时,检查是否发送数据时间超过了60s
10139 参数错误 检查参数是否正确
10160 请求数据格式非法 检查请求数据是否是合法的json
10161 base64解码失败 检查发送的数据是否使用base64编码了
10163 参数校验失败 具体原因见详细的描述
10200 读取数据超时 检查是否累计10s未发送数据并且未关闭连接
10222 1.上传的数据超过了接口上限; 2.SSL证书无效; 1.检查接口上传的数据(文本、音频、图片等)是否超越了接口的最大限制,可到相应的接口文档查询具体的上限; 2. 请将log导出发到工单:https://console.xfyun.cn/workorder/commit;
10223 lb 找不到节点 提交工单
10313 appid和apikey不匹配 检查appid是否合法
10317 版本非法 请到控制台提交工单联系技术人员
10700 引擎异常 按照报错原因的描述,对照开发文档检查输入输出,如果仍然无法排除问题,请提供sid以及接口返回的错误信息,到控制台提交工单联系技术人员排查。
11200 功能未授权 请先检查appid是否正确,并且确保该appid下添加了相关服务。若没问题,则按照如下方法排查。 1. 确认总调用量是否已超越限制,或者总次数授权已到期,若已超限或者已过期请联系商务人员。 2. 查看是否使用了未授权的功能,或者授权已过期。
11201 该APPID的每日交互次数超过限制 根据自身情况提交应用审核进行服务量提额,或者联系商务购买企业级正式接口,获得海量服务量权限以便商用。
11503 服务内部响应数据错误 提交工单
11502 服务配置错误 提交工单
100001~100010 调用引擎时出现错误 请根据message中包含的errno前往 5.2引擎错误码 查看对应的说明及处理策略
在线
咨询
建议
反馈
体验
中心